/*! *********************************************************************************
* Copyright (c) 2015, Freescale Semiconductor, Inc.
* Copyright 2016-2017 NXP
* All rights reserved.
*
* \file
*
* SPDX-License-Identifier: BSD-3-Clause
********************************************************************************** */

#ifndef __GPIO_IRQ_ADAPTER_H__
#define __GPIO_IRQ_ADAPTER_H__

/*! *********************************************************************************
*************************************************************************************
* Include
*************************************************************************************
********************************************************************************** */
#include "EmbeddedTypes.h"
//#include "fsl_device_registers.h"
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "misc.h"


/*! *********************************************************************************
*************************************************************************************
* Public macros
*************************************************************************************
********************************************************************************** */
#define    SWITCH_NUM       1

/*! *********************************************************************************
*************************************************************************************
* Public type definitions
*************************************************************************************
********************************************************************************** */

typedef void(*PortClockEnableFunc_TypeDef)(uint32_t, FunctionalState);
typedef void(*PeriphClockEnableFunc_TypeDef)(uint32_t, FunctionalState);

typedef union AliasFunc_tag{
    EXTI_InitTypeDef ExitCfg;    
}AliasFunc_InitTypeDef;



typedef struct gpio_tag{
    PortClockEnableFunc_TypeDef     PortClockFunc;
    PeriphClockEnableFunc_TypeDef   PeriphClockFunc;
    GPIO_TypeDef                    *Gpio_x;
    GPIO_InitTypeDef                GpioCfg;
    AliasFunc_InitTypeDef           AFCfg;
    NVIC_InitTypeDef                NvicCfg;
}Gpio_t;
    






/*! *********************************************************************************
*************************************************************************************
* Public prototypes
*************************************************************************************
********************************************************************************** */





#endif /* __GPIO_IRQ_ADAPTER_H__ */
